/*
 * @Description:
 * @Author: dh
 * @Date: 2021-09-03 09:02:39
 * @LastEditors: dh
 * @LastEditTime: 2021-09-03 09:16:30
 */
// 导入koa，和koa 1.x不同，在koa2中，我们导入的是一个class，因此用大写的Koa表示:
const Koa = require('koa')

// 创建一个Koa对象表示web app本身:
const app = new Koa()

// 对于任何请求，app将调用该异步函数处理请求： ctx包含 request和response
app.use(async (ctx, next) => {
	console.log(`${ctx.request.method} ${ctx.request.url}`) // 打印URL
	await next() // 调用下一个middleware
	// ctx.response.status = 401 // ajax状态;
})

app.use(async (ctx, next) => {
	const start = new Date().getTime() // 当前时间
	await next() // 调用下一个middleware
	const ms = new Date().getTime() - start // 耗费时间
	console.log(`Time: ${ms}ms`) // 打印耗费时间
})

app.use(async (ctx, next) => {
	await next()
	ctx.response.type = 'text/html'
	ctx.response.body = '<h1>Hello, koa2!</h1>'
})

// 在端口3000监听:
app.listen(3000)
console.log('http://localhost:3000')
